package com.mz.nhoz.xlsx;

import org.apache.poi.ss.usermodel.Cell;

/**
 * Representa un encabezado de una tabla de excel. Contiene informacion sobre el
 * nombre del encabezado, el tipo de dato de los elementos alineados con el
 * mismo y el indice que ocupa dentro de la tabla (ya sea indice de columna o
 * fila).
 * 
 * @author Martin
 *
 */
public class XlsxTableHeader {
	public final static int TYPE_NUMERIC = Cell.CELL_TYPE_NUMERIC;
	public final static int TYPE_STRING = Cell.CELL_TYPE_STRING;
	public final static int TYPE_BOOLEAN = Cell.CELL_TYPE_BOOLEAN;
	public final static int TYPE_ERROR = Cell.CELL_TYPE_ERROR;
	public final static int TYPE_FORMULA = Cell.CELL_TYPE_FORMULA;

	private String name;
	private int headerType;

	/**
	 * Retorna el nombre del encabezado.
	 * 
	 * @return nombre del encabezado.
	 */
	public String getName() {
		return name;
	}

	/**
	 * Retorna el codigo del tipo de encabezado.
	 * 
	 * @return codigo del tipo de encabezado.
	 */
	public int getHeaderType() {
		return headerType;
	}

	/**
	 * Crea una nueva instancia de encabezado de tabla.
	 * 
	 * @param headerType
	 *            - Tipo de dato de elementos alineados con el encabezado (ej:
	 *            si encabezado es Edad entonces headerType = TYPE_NUMERIC).
	 * @param name
	 *            - Nombre de encabezado de tabla.
	 * @param index
	 *            - Indice de encabezado.
	 */
	public XlsxTableHeader(int headerType, String name) {
		super();
		this.headerType = headerType;
		this.name = name;
	}



	public XlsxTableHeader(String name) {
		super();
		this.name = name;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + headerType;
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		XlsxTableHeader other = (XlsxTableHeader) obj;
		if (headerType != other.headerType)
			return false;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		return true;
	}


}// XlsTableHeader
